Typically, one program will call another program in order to take advantage of the functionality of the other program. This enhances code reuse and reduces complexity of the calling program.
However, previously, in order for one program to communicate with another program, the programs had to be architecturally compatible. That is, they had to have compatible machine context organizations. For instance, if one program used 32-bit registers to save machine context information, then the other program had to similarly use 32-bit registers in order to retrieve and use the stored information.
More recently, strides have been made to enable programs having different machine context organizations to communicate with one another. In one example, in order to accomplish this, multiple source code generations are produced. One code generation is targeted to one architecture, while another code generation is targeted to a different architecture. This causes code duplication, increases maintenance costs, and increases the risk of either introducing or incompletely fixing errors.
Although some strides have been made to enable programs of differing architectures to communicate, there still exists a need for further enhancements to provide communication between programs having different machine context organizations.